home *** CD-ROM | disk | FTP | other *** search
-
- Unit keybx;
-
- interface
-
- uses errors;
-
-
- const Right_shift = $0001;
- Left_shift = $0002;
- Ctrl = $0004;
- Alt = $0008;
- Scroll_locked = $0010;
- Num_locked = $0020;
- Caps_locked = $0040;
- Insert_locked = $0080;
-
- Right_ctrl = $0100;
- left_alt = $0200;
- sysreq = $0400;
- Pause_locked = $0800;
- Scroll_pressed = $1000;
- Num_pressed = $2000;
- Caps_pressed = $4000;
- Ins_pressed = $8000;
-
- Space = $3920;
-
- Enter = $1C0D;
- Ctrl_Enter = $1C0A;
- Shift_Enter = $1C0D;
- Alt_Enter = $1C00;
-
- gray_Enter = $E00D;
- Ctrl_Gray_Enter = $E00A;
- Shift_Gray_Enter= $E00D;
- Alt_Gray_Enter = $A600;
-
- gray_Plus = $4E2B;
- Ctrl_gray_plus = $9000;
- Shift_gray_plus = $4E2B;
- alt_gray_plus = $4E00;
-
- gray_Minus = $4A2D;
- Ctrl_gray_minus = $8E00;
- Shift_gray_minus= $4A2D;
- alt_gray_minus = $4A00;
-
- _Esc = $011B;
- Ctrl_Esc = $011B;
- Shift_Esc = $011B;
- Alt_Esc = $0100;
-
- Backspace = $0E08;
- Ctrl_Backspace = $0E7F;
- Shift_Backspace = $0E08;
- Alt_Backspace = $0E00;
-
-
- _Tab = $0F09;
- Ctrl_Tab = $9400;
- Shift_Tab = $0F00;
- Alt_Tab = $A500;
-
- _Up = $4800;
- _Down = $5000;
- _Left = $4B00;
- _Right = $4D00;
- _Home = $4700;
- _End = $4F00;
- _PgUp = $4900;
- _PgDn = $5100;
- _Five = $4C00;
- _Ins = $5200;
- _del = $5300;
-
- Ctrl_Up = $8D00;
- Ctrl_Down = $9100;
- Ctrl_Left = $7300;
- Ctrl_Right = $7400;
- Ctrl_Home = $7700;
- Ctrl_End = $7500;
- Ctrl_PgUp = $8400;
- Ctrl_PgDn = $7600;
- Ctrl_Five = $8F00;
- Ctrl_Del = $9300;
- Ctrl_Ins = $9200;
-
-
- shift_Up = $4838;
- shift_Down = $5032;
- shift_Left = $4B34;
- shift_Right = $4D36;
- shift_Home = $4737;
- shift_End = $4F31;
- shift_PgUp = $4939;
- shift_PgDn = $5133;
- shift_Five = $4C35;
- shift_ins = $5230;
- shift_del = $532E;
-
- gray_Up = $48E0;
- gray_Down = $50E0;
- gray_Left = $4BE0;
- gray_Right = $4DE0;
- gray_Home = $47E0;
- gray_End = $4FE0;
- gray_PgUp = $49E0;
- gray_PgDn = $51E0;
- gray_ins = $52E0;
- gray_del = $53E0;
-
- Ctrl_gray_Up = $8DE0;
- Ctrl_gray_Down = $91E0;
- Ctrl_gray_Left = $73E0;
- Ctrl_gray_Right = $74E0;
- Ctrl_gray_Home = $77E0;
- Ctrl_gray_End = $75E0;
- Ctrl_gray_PgUp = $84E0;
- Ctrl_gray_PgDn = $76E0;
- Ctrl_Gray_Ins = $92E0;
- Ctrl_Gray_del = $93E0;
-
- shift_gray_Up = $48E0;
- shift_gray_Down = $50E0;
- shift_gray_Left = $4BE0;
- shift_gray_Right= $4DE0;
- shift_gray_Home = $47E0;
- shift_gray_End = $4FE0;
- shift_gray_PgUp = $49E0;
- shift_gray_PgDn = $51E0;
- Shift_gray_Ins = $52E0;
- Shift_gray_del = $53E0;
-
- Alt_gray_Up = $9800;
- Alt_gray_Down = $A000;
- Alt_gray_Left = $9B00;
- Alt_gray_Right = $9D00;
- Alt_gray_Home = $9700;
- Alt_gray_End = $9F00;
- Alt_gray_PgUp = $9900;
- Alt_gray_PgDn = $A100;
- Alt_gray_Ins = $A200;
- Alt_gray_del = $A300;
-
- _f1 = $3B00;
- _f2 = $3C00;
- _f3 = $3D00;
- _f4 = $3E00;
- _f5 = $3F00;
- _f6 = $4000;
- _f7 = $4100;
- _f8 = $4200;
- _f9 = $4300;
- _f10 = $4400;
- _f11 = $8500;
- _f12 = $8600;
-
- Shift_f1 = $5400;
- Shift_f2 = $5500;
- Shift_f3 = $5600;
- Shift_f4 = $5700;
- Shift_f5 = $5800;
- Shift_f6 = $5900;
- Shift_f7 = $5A00;
- Shift_f8 = $5B00;
- Shift_f9 = $5C00;
- Shift_f10 = $5D00;
- Shift_f11 = $8700;
- Shift_f12 = $8800;
-
- Ctrl_f1 = $5E00;
- Ctrl_f2 = $5F00;
- Ctrl_f3 = $6000;
- Ctrl_f4 = $6100;
- Ctrl_f5 = $6200;
- Ctrl_f6 = $6300;
- Ctrl_f7 = $6400;
- Ctrl_f8 = $6500;
- Ctrl_f9 = $6600;
- Ctrl_f10 = $6700;
- Ctrl_f11 = $8900;
- Ctrl_f12 = $8A00;
-
- Alt_f1 = $6800;
- Alt_f2 = $6900;
- Alt_f3 = $6A00;
- Alt_f4 = $6B00;
- Alt_f5 = $6C00;
- Alt_f6 = $6D00;
- Alt_f7 = $6E00;
- Alt_f8 = $6F00;
- Alt_f9 = $7000;
- Alt_f10 = $7100;
- Alt_f11 = $8B00;
- Alt_f12 = $8C00;
-
- Alt_a = $1E00;
- Alt_b = $3000;
- Alt_c = $2E00;
- Alt_d = $2000;
- Alt_e = $1200;
- Alt_f = $2100;
- Alt_g = $2200;
- Alt_h = $2300;
- Alt_i = $1700;
- Alt_j = $2400;
- Alt_k = $2500;
- Alt_l = $2600;
- Alt_m = $3200;
- Alt_n = $3100;
- Alt_o = $1800;
- Alt_p = $1900;
- Alt_q = $1000;
- Alt_r = $1300;
- Alt_s = $1F00;
- Alt_t = $1400;
- Alt_u = $1600;
- Alt_v = $2F00;
- Alt_w = $1100;
- Alt_x = $2D00;
- Alt_y = $1500;
- Alt_z = $2C00;
-
- Ctrl_a = $1E01;
- Ctrl_b = $3002;
- Ctrl_c = $2E03;
- Ctrl_d = $2004;
- Ctrl_e = $1205;
- Ctrl_f = $2106;
- Ctrl_g = $2207;
- Ctrl_h = $2308;
- Ctrl_i = $1709;
- Ctrl_j = $240A;
- Ctrl_k = $250B;
- Ctrl_l = $260C;
- Ctrl_m = $320D;
- Ctrl_n = $310E;
- Ctrl_o = $180F;
- Ctrl_p = $1910;
- Ctrl_q = $1011;
- Ctrl_r = $1312;
- Ctrl_s = $1F13;
- Ctrl_t = $1414;
- Ctrl_u = $1615;
- Ctrl_v = $2F16;
- Ctrl_w = $1117;
- Ctrl_x = $2D18;
- Ctrl_y = $1519;
- Ctrl_z = $2C1A;
-
-
- Key_a = $1E61;
- Key_b = $3062;
- Key_c = $2E63;
- Key_d = $2064;
- Key_e = $1265;
- Key_f = $2166;
- Key_g = $2267;
- Key_h = $2368;
- Key_i = $1769;
- Key_j = $246A;
- Key_k = $256B;
- Key_l = $266C;
- Key_m = $326D;
- Key_n = $316E;
- Key_o = $186F;
- Key_p = $1970;
- Key_q = $1071;
- Key_r = $1372;
- Key_s = $1F73;
- Key_t = $1474;
- Key_u = $1675;
- Key_v = $2F76;
- Key_w = $1177;
- Key_x = $2D78;
- Key_y = $1579;
- Key_z = $2C7A;
-
- Key_0 = $0B30;
- Key_1 = $0231;
- Key_2 = $0332;
- Key_3 = $0433;
- Key_4 = $0534;
- Key_5 = $0635;
- Key_6 = $0736;
- Key_7 = $0837;
- Key_8 = $0938;
- Key_9 = $0A39;
-
-
- Shift_Key_a = $1E41;
- Shift_Key_b = $3042;
- Shift_Key_c = $2E43;
- Shift_Key_d = $2044;
- Shift_Key_e = $1245;
- Shift_Key_f = $2146;
- Shift_Key_g = $2247;
- Shift_Key_h = $2348;
- Shift_Key_i = $1749;
- Shift_Key_j = $244A;
- Shift_Key_k = $254B;
- Shift_Key_l = $264C;
- Shift_Key_m = $324D;
- Shift_Key_n = $314E;
- Shift_Key_o = $184F;
- Shift_Key_p = $1950;
- Shift_Key_q = $1051;
- Shift_Key_r = $1352;
- Shift_Key_s = $1F53;
- Shift_Key_t = $1454;
- Shift_Key_u = $1655;
- Shift_Key_v = $2F56;
- Shift_Key_w = $1157;
- Shift_Key_x = $2D58;
- Shift_Key_y = $1559;
- Shift_Key_z = $2C5A;
-
- Shift_Key_0 = $0B29;
- Shift_Key_1 = $0221;
- Shift_Key_2 = $0340;
- Shift_Key_3 = $0423;
- Shift_Key_4 = $0524;
- Shift_Key_5 = $0625;
- Shift_Key_6 = $075E;
- Shift_Key_7 = $0826;
- Shift_Key_8 = $092A;
- Shift_Key_9 = $0A28;
-
- No_Key_At_all = $FFFF;
- No_Key = $FFFE;
- Ctrl_Break = $0000;
-
-
- function Readkey:char;
- function keypressed:boolean;
-
- function Extended_Keypressed:boolean;
- function Extended_Readkey:word;
- procedure Extended_Writekey(scan_code:word);
- function Extended_Browsekey:word;
- procedure Flush_That_Key;
-
- function Ctrl_Break_pressed:boolean;
- procedure Clear_Ctrl_Break;
-
- function get_shift_status:word;
- function shift_status_is(mask:word):boolean;
- function Get_char(w:word):char;
-
-
- Var Touche_Residuelle:byte;
- Last_key:word;
-
-
- implementation
-
- (*===========*)
- function Get_char(w:word):char; assembler;
- asm
- mov ax,w
- end;
-
- (*===========*)
- function Readkey:char; assembler;
- asm
- mov al,Touche_residuelle
- or al,al
- jz @ici
- mov touche_residuelle,0
- jmp @exit
- @ici:
- mov ah,$10
- int $16
- mov last_key,ax
- or al,al
- jnz @exit
- mov Touche_residuelle,ah
- @exit:
- end;
-
-
- (*===========*)
- function keypressed:boolean; assembler;
- asm
- mov ah,$11
- int $16
- mov al,0
- jz @exit
- mov al,1
- @exit:
- end;
-
-
- (*===========*)
- function get_shift_status:word; assembler;
- asm
- xor ax,ax
- mov es,ax
- mov ax,es:[$417]
- end;
-
- (*===========*)
- function shift_status_is(mask:word):boolean; assembler;
- asm
- xor ax,ax
- mov es,ax
- mov ax,es:[$417]
- and ax,mask
- jz @exit
- mov al,1
- @exit:
- end;
-
-
- (*===========*)
- procedure Clear_Ctrl_Break; assembler;
- asm
- xor ax,ax
- mov es,ax
- mov byte ptr es:[$471],0
- end;
-
-
- (*===========*)
- function Ctrl_Break_pressed:boolean; assembler;
- asm
- xor ax,ax
- mov es,ax
- mov al,es:[$471]
- shr al,7
- end;
-
-
- (*===========*)
- function extended_keypressed:boolean; assembler;
- asm
- mov ah,$11
- int $16
- lahf
- and ah,$4
- not ah
- mov al,ah
- end;
-
- (*===========*)
- function Extended_Browsekey:word; assembler;
- asm
- mov ah,$11;
- int $16
- jnz @exit
- xor ax,ax
- @exit:
- end;
-
- (*===========*)
- function extended_readkey:word; assembler;
- asm
- mov ah,$10
- int $16
- mov last_key,ax
- end;
-
- (*===========*)
- procedure flush_that_key; assembler;
- asm
- mov ah,$10
- int $16
- end;
-
- (*===========*)
- procedure extended_writekey(scan_code:word); assembler;
- asm
- mov ah,5
- mov cx,scan_code
- int $16
- end;
-
-
-
- begin
- Touche_residuelle:=0;
- Last_key:=no_key_at_all;
- Clear_Ctrl_Break;
- end.
-